/************************************
 文件明 ：  bsp_gpio.c
 作者   ：  胡秋峰
 描述   ：  GPIO操作文件
 ************************************/
#include "bsp_gpio.h"

/**
 * @描述            ： GPIO初始化函数
 * @参数 - base     ： GPIO组
 * @参数 - pin      ： GPIO组编号
 * @参数 - config   ： GPIO配置结构体
 * @返回值          ： 无 
 */
void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config)
{
    if (config->direction == kGPIO_DigitalInput) {
        base->GDIR &= ~(1 << pin);
    } else {
        base->GDIR |= (1 << pin);
        gpio_pin_write(base, pin, config->outputLogic);
    }
}

/**
 * @描述            ： 读取GPIO引脚电平
 * @参数 - base     ： GPIO组
 * @参数 - pin      ： GPIO组编号
 * @返回值          ： 引脚电平 0：低电平 1：高电平
 */
int gpio_pin_read(GPIO_Type *base, int pin)
{
    return ((base->DR >> pin) & 0x1);
}

/**
 * @描述            ： 指定GPIO引脚电平
 * @参数 - base     ： GPIO组
 * @参数 - pin      ： GPIO组编号
 * @参数 - value    ： 引脚电平 0：低电平 1：高电平
 * @返回值          ： 无
 */
void gpio_pin_write(GPIO_Type *base, int pin, int value)
{
    if (value == 0U) {
        base->DR &= ~(1U << pin);
    } else {
        base->DR |= (1U << pin);
    }
}